package rsj.service.contract;

import rsj.api.contract.entity.Contract;
import rsj.api.contract.entity.ContractDetail;

import java.util.List;

/**
 * 合同
 *
 * @author yuanqinglong
 * @since 2021/7/16 16:55
 */
public interface IContractService {

    /**
     * 合同列表
     *
     * @param orgId    org id
     * @param pageSize 页面大小
     * @param pageNow  页面页码
     * @return {@link List<Contract>}
     */
    List<ContractDetail> contractList(String orgId, Integer pageSize, Integer pageNow);


    /**
     * 合同数
     *
     * @param orgId org id
     * @return int
     */
    int contractCount(String orgId);


    /**
     * 添加合同
     *
     * @param contract 合同
     */
    void addContract(Contract contract);


    /**
     * 检查产品的使用
     *
     * @param orgId   机构 id
     * @param prodUid 产品编号
     * @return {@link List<String>}
     */
    List<String> checkContractedProduct(String orgId, String prodUid);


    /**
     * 更新合同状态
     *  @param orgpId 合同id
     * @param status 合同状态（0停用、1启用）
     */
    void updateContractStatus(String orgpId, String status);


    /**
     * 合同下的组织
     *
     * @param orgId 机构id
     * @return {@link List<String>}
     */
    List<String> contractUnderOrganization(String orgId);


    /**
     * 组合包量合同
     *
     * @param orgIds 机构id
     * @return {@link List<Contract>}
     */
    List<Contract> combinationContract(List<String> orgIds);

}
